Unity 3D: 鼠标和键盘自由切换场景视觉解析

您所在的位置:网站首页 好看盗墓电影 百度网盘下载 Unity 3D: 鼠标和键盘自由切换场景视觉解析

Unity 3D: 鼠标和键盘自由切换场景视觉解析

#Unity 3D: 鼠标和键盘自由切换场景视觉解析| 来源: 网络整理| 查看: 265

Unity 3D: 鼠标和键盘自由切换场景视觉解析 符号 阅读:562 2021-04-01 13:09:40 评论:0

前言: 前面介绍过,鼠标控制 视觉移动文章,现在用键盘实现视觉移动,并可以让鼠标和键盘自由切换来控制当前角色的视觉移动。

脚本如下(C#):

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Camera_move : MonoBehaviour { public int speed = 5; public Transform bullet; // mouse view enum public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY =2 } public RotationAxes m_axes = RotationAxes.MouseXAndY; // 鼠标敏感度 public float m_sensitivityX = 10f; public float m_sensitivityY = 10f; // 水平方向 上的 视角旋转范围 public float m_minimumX = -360f; public float m_maximumX = 360f; // 垂直方向上的 视角旋转范围 public float m_minimumY = -45f; public float m_maximumY = 45f; float m_rotationY = 0f; // 默认 键盘控制视角 bool isKeyView = true; // Use this for initialization void Start () { // 防止刚体 影响物体旋转 if (GetComponent()) { GetComponent().freezeRotation = true; } } // Update is called once per frame void Update () { // 根据按键 W,A,S,D 移动 float x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.Translate(x, 0, z); print("x:" + x); // 发射子弹 if (Input.GetButtonDown("Fire1")) { Transform n = Instantiate( bullet, transform.position, transform.rotation); // 旋转方向 Vector3 front = transform.TransformDirection(Vector3.forward); // 给物体加力 n.GetComponent().AddForce(front * 2800); } // 切换 视角 ( 组合键shift + x 切换) if (Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.X)) { isKeyView = (isKeyView == true) ? false : true; } if (isKeyView) { keyControlView(); } else { mouseControlView(); } } void keyControlView() { // 摄像机镜头(视觉) 左右转向 if (Input.GetKey(KeyCode.Q)) { transform.Rotate(0, -25 * Time.deltaTime, 0, Space.Self); } if (Input.GetKey(KeyCode.E)) { transform.Rotate(0, 25 * Time.deltaTime, 0, Space.Self); } // 摄像机镜头 上下转向 if (Input.GetKey(KeyCode.Z)) { transform.Rotate(-25 * Time.deltaTime, 0, 0, Space.Self); } if (Input.GetKey(KeyCode.C)) { transform.Rotate(25 * Time.deltaTime, 0, 0, Space.Self); } // 摄像机升高 降低 if (Input.GetKey(KeyCode.H)) { transform.Translate(0, 5 * Time.deltaTime, 0); } if (Input.GetKey(KeyCode.N)) { transform.Translate(0, -5 * Time.deltaTime, 0); } } void mouseControlView() { if (m_axes == RotationAxes.MouseXAndY) { float m_rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); transform.localEulerAngles = new Vector3(-m_rotationY, m_rotationX, 0); } else if (m_axes == RotationAxes.MouseX) { transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } }

把脚本挂载到 角色上就可以了。有兴趣 的可以试试~ (~ ̄▽ ̄)~

标签:程序员编程语言 声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章 驾校怎样招生最有效

驾校怎样招生最有效

做一个外贸网站需要多少钱/价格?外贸独立站优化运营技巧是什么?

做一个外贸网站需要多少钱/价格?外贸独立站优化运营技巧是什么?

中国书画报20220321导读:他把自己的一切献给了一部小说

中国书画报20220321导读:他把自己的一切献给了一部小说

一个故事教你看懂什么是数字证书,它的原理是什么它的作用是什么总结

一个故事教你看懂什么是数字证书,它的原理是什么它的作用是什么总结

数字证书中主题(Subject)中字段的含义总结

数字证书中主题(Subject)中字段的含义总结

EJBCA认证系统结构及相关介绍总结

EJBCA认证系统结构及相关介绍总结

mac antrl4环境安装&第一个程序总结

mac antrl4环境安装&第一个程序总结

osg显示文字总结

osg显示文字总结

Word文档重新打开时恢复到上次阅读位置总结

Word文档重新打开时恢复到上次阅读位置总结

Word设置默认隐藏页面间空白总结

Word设置默认隐藏页面间空白总结

Excel中项目开发计划的日期编排公式技巧总结

Excel中项目开发计划的日期编排公式技巧总结

Excel中如何改变符合条件的某行记录的背景色总结

Excel中如何改变符合条件的某行记录的背景色总结



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3